Skip to content

Conversation

@kotlarmilos
Copy link
Member

Description

This PR enables running full test suite on Apple mobile platforms.

Fixes #120055

@github-actions github-actions bot added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Jan 9, 2026
@lewing lewing removed the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Jan 9, 2026
@kotlarmilos kotlarmilos added the os-ios Apple iOS label Jan 9, 2026
@dotnet-policy-service
Copy link
Contributor

Tagging subscribers to 'os-ios': @vitek-karas, @kotlarmilos, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@kotlarmilos
Copy link
Member Author

/azp run runtime-ioslike,runtime-ioslikesimulator,runtime-maccatalyst

@azure-pipelines
Copy link

Azure Pipelines successfully started running 3 pipeline(s).

@kotlarmilos
Copy link
Member Author

/azp run runtime-ioslike,runtime-ioslikesimulator,runtime-maccatalyst

@azure-pipelines
Copy link

Azure Pipelines successfully started running 3 pipeline(s).

@kotlarmilos
Copy link
Member Author

/azp run runtime-ioslike,runtime-ioslikesimulator,runtime-maccatalyst

@azure-pipelines
Copy link

Azure Pipelines successfully started running 3 pipeline(s).

Copilot AI review requested due to automatic review settings January 30, 2026 07:58
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Enables broader (up to full) library/runtime test execution on Apple mobile platforms by adjusting Helix payload contents, Apple build MSBuild integration (CoreCLR + R2R/crossgen2), and CI pipeline configuration for iOS/tvOS/MacCatalyst.

Changes:

  • Add crossgen2 and related assets to Helix correlation payload and update Apple R2R compilation targets to reference local runtime-pack assemblies.
  • Expand Apple-mobile test project selection (libraries + functional tests) and propagate UseMonoRuntime into Helix build commands.
  • Update CI pipelines (timeouts, Helix arguments) to build/run broader test sets and optionally build Apple apps on Helix.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/tests/Common/helixpublishwitharcade.proj Ships additional CoreCLR build assets (crossgen2) when building Apple apps on Helix.
src/mono/msbuild/common/RuntimeComponentManifest.targets Gates manifest-reading target to Mono runtime usage.
src/mono/msbuild/apple/build/AppleBuild.props Makes Apple R2R targets import path robust (via MSBuildThisFileDirectory).
src/mono/msbuild/apple/build/AppleBuild.ReadyToRun.targets Ensures crossgen2 gets full runtime-pack managed references (adds libs runtime files).
src/mono/msbuild/apple/build/AppleBuild.LocalBuild.props Defines Crossgen2InBuildDir for AppleBuildSupportDir-based builds.
src/libraries/tests.proj Expands Apple-mobile library/functional test inclusion and adjusts iossimulator conditions.
eng/testing/tests.targets Disables runtime-async preview enabling on Android and Apple mobile targets.
eng/testing/tests.ioslike.targets Passes UseMonoRuntime through Helix build command; always imports Apple build props.
eng/pipelines/runtime.yml Updates Apple CoreCLR job build args/Helix behavior for broader library testing.
eng/pipelines/extra-platforms/runtime-extra-platforms-maccatalyst.yml Extends timeouts and shifts MacCatalyst CoreCLR jobs to build/run more tests.
eng/pipelines/extra-platforms/runtime-extra-platforms-ioslikesimulator.yml Extends timeouts and enables “build apps on Helix” for iOS-like simulator runtime tests.
eng/pipelines/extra-platforms/runtime-extra-platforms-ioslike.yml Extends timeouts and enables “build apps on Helix” for iOS/tvOS device runtime & library tests.

Comment on lines 8 to 12
and '$(TargetOS)' != 'wasi'
and '$(TargetOS)' != 'android'
and '$(TargetsAppleMobile)' != 'true'
and '$(RuntimeFlavor)' != 'Mono'
and '$(UseRuntimeAsync)' != 'false'">
Copy link

Copilot AI Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This block’s comment says runtime-async is enabled for “all .NET 11+ test projects”, but the condition now excludes Android and Apple mobile targets. Please update the comment to reflect these exclusions (or explain why these platforms are intentionally opted out).

Copilot uses AI. Check for mistakes.
@kotlarmilos
Copy link
Member Author

/azp run runtime-ioslike,runtime-ioslikesimulator,runtime-maccatalyst

@azure-pipelines
Copy link

Azure Pipelines successfully started running 3 pipeline(s).

Copilot AI review requested due to automatic review settings January 30, 2026 13:56
@kotlarmilos
Copy link
Member Author

/azp run runtime-ioslike

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 12 out of 12 changed files in this pull request and generated 2 comments.

nameSuffix: AllSubsets_CoreCLR_Smoke
buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=- /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:BuildTestsOnHelix=false /p:UseNativeAOTRuntime=false /p:RunSmokeTestsOnly=true
timeoutInMinutes: 120
buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false
Copy link

Copilot AI Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this MacCatalyst CoreCLR libraries job, the buildArgs no longer pass /p:BuildTestsOnHelix=true. For mobile targets (maccatalyst is TargetsMobile=true), ArchiveTests only runs when BuildTestsOnHelix=true (see eng/testing/tests.targets:92-95), so this job is likely to skip producing the test archives needed by the subsequent helix.yml step. Add /p:BuildTestsOnHelix=true to the buildArgs (or otherwise ensure BuildTestsOnHelix is set during the build) so archiving and Helix submission work consistently.

Suggested change
buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true $(_runSmokeTestsOnlyArg) /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false
buildArgs: -s clr+clr.runtime+libs+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:BuildTestsOnHelix=true $(_runSmokeTestsOnlyArg) /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=false /p:UseMonoRuntime=false /p:MonoForceInterpreter=false /p:UseNativeAOTRuntime=false

Copilot uses AI. Check for mistakes.
Comment on lines 704 to 713
<ItemGroup Condition="'$(ArchiveTests)' == 'true' and '$(TargetOS)' == 'ios' and '$(RunAOTCompilation)' == 'true'">
<!-- Only System.Runtime tests on iOS for now -->
<ProjectReference Include="$(MSBuildThisFileDirectory)System.Runtime\tests\System.Runtime.Tests\System.Runtime.Tests.csproj" />

<ProjectReference Include="$(RepoRoot)\src\tests\FunctionalTests\iOS\Device\**\*.Test.csproj"
Exclude="@(ProjectExclusions)"
BuildInParallel="false" />
</ItemGroup>

<ItemGroup Condition="'$(ArchiveTests)' == 'true' and '$(TargetOS)' == 'ios' and '$(RuntimeFlavor)' == 'CoreCLR' and '$(UseNativeAOTRuntime)' != 'true'">
<ProjectReference Include="$(MSBuildThisFileDirectory)System.Runtime\tests\System.Runtime.Tests\System.Runtime.Tests.csproj" />
Copy link

Copilot AI Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These two ItemGroups add the same ProjectReference entries under overlapping conditions. If a CoreCLR iOS run is ever configured with RunAOTCompilation=true (or if RunAOTCompilation is set globally), the same projects will be referenced twice. Consider consolidating into a single ItemGroup with a mutually exclusive condition, or guard the first ItemGroup to exclude CoreCLR (e.g., add a RuntimeFlavor check) to avoid duplicate references and keep this section maintainable.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

[clr-ios] Stand up library and runtime test on Apple mobile using interpreter + R2R

2 participants